wayland: Fix invalid cast in transient_for
authorJasper St. Pierre <jstpierre@mecheye.net>
Tue, 19 Nov 2013 17:36:12 +0000 (12:36 -0500)
committerJasper St. Pierre <jstpierre@mecheye.net>
Tue, 19 Nov 2013 17:36:27 +0000 (12:36 -0500)
gdk/wayland/gdkwindow-wayland.c

index e81cad89eff963113bf522812d216f8331d39293..08e20af09d766de2575faff7854e871b6b9d8369 100644 (file)
@@ -839,16 +839,25 @@ static void
 gdk_wayland_window_sync_transient_for (GdkWindow *window)
 {
   GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
-  GdkWindowImplWayland *impl_parent = GDK_WINDOW_IMPL_WAYLAND (impl->transient_for);
+  struct wl_surface *transient_for_surface;
 
   if (!impl->xdg_surface)
     return;
 
-  /* XXX: Is this correct? */
-  if (!impl_parent->surface)
-    return;
+  if (impl->transient_for)
+    {
+      GdkWindowImplWayland *impl_parent = GDK_WINDOW_IMPL_WAYLAND (impl->transient_for->impl);
+
+      /* XXX: Is this correct? */
+      if (!impl_parent->surface)
+        return;
+
+      transient_for_surface = impl_parent->surface;
+    }
+  else
+    transient_for_surface = NULL;
 
-  xdg_surface_set_transient_for (impl->xdg_surface, impl_parent->surface);
+  xdg_surface_set_transient_for (impl->xdg_surface, transient_for_surface);
 }
 
 static void